
 /**
 * 上海中赢金融信息服务有限公司
 * Copyright (c) 2017-2027 Chinazyjr,Inc.All Rights Reserved.
 */
package com.sys.midware.redis.core.operation;

import java.util.List;

/**
 * <b>Description：</b> TODO <br/>
 * <b>ClassName：</b> ListOperations <br/>
 * <b>@author：</b> jackyshang <br/>
 * <b>@date：</b> 2016年8月22日 下午4:01:14 <br/>
 * <b>@version: </b>  <br/>
 */
public interface ListOperations {
    /**
     * 设置list
     * putList <br/> 
     * @param key
     * @param values
     * @return  Long <br/>
     */
    public  <K,T> Long putList(K key, List<T> values) ;
    
    /**
     * 获取分页list
     * getPageFromList <br/> 
     * @param key
     * @param clazz
     * @param start
     * @param end
     * @return  List<T> <br/>
     */
    public <K,V> List<V> getFromListByPage(K key, int start,
            int end);
    /**
     * 获取所有list
     * getFromList <br/> 
     * @param key
     * @return  List<V> <br/>
     */
    public <K,V> List<V> getFromList(K key);
    /**
     * 压栈
     * push <br/> 
     * @param key
     * @param value
     * @return  Long <br/>
     */
    public <K,V> Long push(K key, V value);
    /**
     * 出栈
     * pop <br/> 
     * @param key
     * @return  String <br/>
     */
    public <K,V> V  pop(K key);
    /**
     * 入队
     * in <br/> 
     * @param key
     * @param value
     * @return  Long <br/>
     */
    public <K,V> Long in(K key, V value);
    /**
     * 出队
     * out <br/> 
     * @param key
     * @return  String <br/>
     */
    public <K,V> V out(K key);
    /**
     * 集合长度
     * length <br/> 
     * @param key
     * @return  Long <br/>
     */
    public <K> Long size(K key);
    /**
     * 移除
     * remove <br/> 
     * @param key
     * @param i
     * @param value  void <br/>
     */
    public  boolean delete(Object... keys);
    /**
     * 检索 
     * index <br/> 
     * @param key
     * @param index
     * @return  String <br/>
     */
    public <K,V> V index(K key, long index);
    /**
     * 置值 
     * TODO <br/> 
     * set <br/> 
     * @param key
     * @param index
     * @param value  void <br/>
     */
    public <K,V>String set(K key, long index, V value) ;
    /**
     * 裁剪
     * trim <br/> 
     * @param key
     * @param start
     * @param end  void <br/>
     */
    public <K,V> String trim(K key, long start, long end);
    
    
    
    
}
